/**
 * 将时间戳转换为自定义格式的日期时间字符串
 * @param {number} timestamp - 时间戳（支持10位秒级/13位毫秒级）
 * @param {string} format - 格式字符串（YYYY,MM,DD,HH,mm,ss）
 * @param {string} [timeZone='UTC'] - 时区（如 'Asia/Shanghai'）
 * @returns {string} 格式化后的字符串或错误信息
 */
export function formatTimestamp(timestamp, format = 'YYYY-MM-DD HH:mm:ss', timeZone = 'Asia/Shanghai') {
  // 验证时间戳
  if (typeof timestamp !== 'number' || isNaN(timestamp)) {
    return '错误：无效的时间戳';
  }

  // 处理10位秒级时间戳
  if (timestamp.toString().length === 10) {
    timestamp *= 1000;
  }

  const date = new Date(timestamp);
  if (date.toString() === 'Invalid Date') {
    return '错误：无效的时间戳';
  }

  // 定义获取指定时区日期部分的函数
  const getDatePart = (part) => {
    const options = {
      [part]: part === 'year' ? 'numeric' : '2-digit',
      timeZone,
      hour12: false
    };
    return date.toLocaleString('en-US', options).padStart(2, '0');
  };

  // 分别获取各个部分
  const year = getDatePart('year');
  const month = getDatePart('month');
  const day = getDatePart('day');
  const hour = getDatePart('hour');
  const minute = getDatePart('minute');
  const second = getDatePart('second');

  // 替换格式字符串
  return format
    .replace('YYYY', year)
    .replace('MM', month)
    .replace('DD', day)
    .replace('HH', hour)
    .replace('mm', minute)
    .replace('ss', second);
}